import router from "../router";
import { useAuthStore } from "../stores/authStore";

// 白名单路由
const whiteList = ["/login", "/register", "/404"];

router.beforeEach(async (to, from, next) => {
  const authStore = useAuthStore();
  const token = authStore.token;

  if (token) {
    if (to.path === "/login") {
      // 已登录且要跳转登录页，重定向到首页
      next({ path: "/home" });
    } else {
      try {
        // 如果是首次进入首页，预加载数据
        if (to.path === "/home" && from.path === "/login") {
          const { getIndexCourses } = await import("@/api/user/index");
          await getIndexCourses();
        }
        next();
      } catch (error) {
        // token失效，清除token并跳转登录页
        authStore.clearToken();
        next(`/login?redirect=${to.path}`);
      }
    }
  } else {
    // 未登录
    if (whiteList.includes(to.path)) {
      // 在白名单中，直接进入
      next();
    } else {
      // 不在白名单中，重定向到登录页
      next(`/login?redirect=${to.path}`);
    }
  }
});
